import { GetListMenu } from "@/api/menu";

const route = {
  namespaced: true,
  state: () => ({
    all: [],
  }),
  mutations: {
    init(state, items) {
      state.all = items;
    },
  },
  actions: {
    async asyncMenu({ commit }, role) {
      GetListMenu({"role": role}).then((res) => {
        commit("init", res.data.body);
      });
      // const res = await GetListMenu({"role": role})
      // if(res.statusCode === 200) {
      //   commit("init", res.data.body)
      // }
    },
    PromiseRoute({commit}, role) {
      return new Promise((resolve, reject) => {
        GetListMenu({"role": role}).then((res) => {
          commit("init", res.body);
          resolve(res.body)
        }).catch(err=>{
          reject(err)
        });
      })
    }
  },
  getters: {
    menus(state) {
      let res = [];
      state.all.forEach((m) => {
        if (m.parentId === 0) {
          m.children = [];
          res.push(m);
        } else {
          res[res.length - 1].children.push(m);
        }
      });
      return res;
    },
    // routes(state) {
    //   let res = [];
    //   state.all.forEach((m) => {
    //     if (m.parentId === 0) {
    //       res.push({
    //         path: m.path,
    //         name: "Home" + m.id,
    //         redirect: { name: m.meta.name },
    //         component: () =>
    //           import( "@/views/layout"),
    //         children: [
    //           {
    //             path: m.path.slice(1),
    //             name: m.meta.name,
    //             component: () =>
    //               import(
    //                  "@/views/" + m.component
    //               ),
    //           },
    //         ],
    //       });
    //     } else {
    //       res[res.length - 1].children.push({
    //         path: m.path.slice(1),
    //         name: m.meta.name,
    //         component: () =>
    //           import(/* webpackChunkName: "about" */ "@/views/" + m.component),
    //       });
    //     }
    //   });
    //   return res;
    // },
  },
};

export default route;
